package day10;

import java.sql.SQLOutput;

//此类是用于验证多态的demo
public class Test04 {
    public static void main(String[] args) {
        //创建纯纯的对象
        Animal1 a = new Animal1();
        a.eat();

        Cat c = new Cat();
        c.eat();
        c.jump();

        Dog d = new Dog();
        d.eat();
        d.run();

        //创建多态对象进行测试
        /*口诀1：父类引用指向子类对象
        解释：创建出来的子类对象的地址值，交给父类类型的引用类型变量来保存
         */
        Animal1 a2 = new Cat();   //创建Cat类的对象的地址值交给夫类型Animal1变量a2来保存
        Animal1 a3 = new Dog();   //创建Dog类对象的地址值交给父类Animal1的变量3来保存
        //测试多态对象，让一类事务拥有多种形态
        //多态对象，使用的是父类的定义，子类的方法体
        //口诀：编译看左边，运行看右边，必须瑶在父类定义这个方法，才能通过编译，把多态对象看作是父类类型
        //必须在子类重写方法，才能满足多态，实际干活的是子类
//        a2.jump();   这个不行就i是因为父类没有定义


    }
}


//1.创建一个名为Animal的1类
class Animal1{
    public void eat(){
        System.out.println("小动物吃东西");
    }
}

//创建名为Cat的子类
class Cat extends Animal1{
    @Override
    public void eat(){
        System.out.println("小猫爱吃小预感");
    }
    public void jump(){
        System.out.println("小猫跳的很高");
    }
}

//创建一个名为Dog的子类，继承Animal1父类
class Dog extends Animal1{
    @Override
    public void eat(){
        System.out.println("小狗爱吃骨头");
    }
    public void run(){
        System.out.println("小狗爱跑步");
    }
}